// pages/wait/wait.js
const util = require("../../utils/request");
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // seat: [], // 所有餐桌
    freeSeat: [], // 空闲餐桌列表
    seatId: "", // 餐桌id
    realAccount: 1, // 就餐人数
    waitStatus: 0, // 0无需排队，1需要排队，2正在排队
    choose: false, // 是否已选座
    waitNo: 0 // 排队编号
  },

//   /**
//    * 查询所有餐桌
//    */
//   getAllSeat() {
//     util.request("/rms/seat/allData", "GET", {}, res => {
//         this.setData({
//             seat: res.data.data
//         });
//     })
//   },

  /**
   * 查询空闲餐桌
   */
  getFreeSeat() {
    util.request("/rms/seat/freeSeat", "GET", {}, res => {
        let freeSeat = res.data.data
        if(freeSeat.length > 0) {
            this.setData({
                freeSeat: res.data.data,
                waitStatus: 0 // 无需排队
            });
        } else {
            this.setData({
                waitStatus: 1 // 需要排队
            });
        }
    })
  },

  /**
   * 判断是否需要排队
   */
  async judgeWait() {
    await this.getMyWait();
    if(this.data.waitStatus == 2) return;
    this.getFreeSeat();
  },

  /**
   * 查询自己未结束的排队信息
   */
  async getMyWait() {
    const openid = wx.getStorageSync('openid');
    let wait = {
        // 构造查询条件：查询自己未结束的排队信息
        wxId: openid,
        status: 0
    };
    await util.request('/rms/wait/allData', 'GET', wait, res => {
        let code = res.data.code;
        if(code == 200) {
            let myWait = res.data.data;
            if(myWait.length <= 0) return; // 没有未结束的预约
            let waitNo = res.data.data[0].waitNo; // 系统保证每人只有一条未结束的预约，因此只判断第一个元素
            this.setData({
                waitNo: waitNo,
                waitStatus: 2 // 正在排队
            });
        }
    });
  },

  /**
   * 监听修改数量
   */
  onChangeNum(event) {
    this.setData({
        realAccount: event.detail
    });
  },

  /**
   * 监听选择餐桌
   */
  onChangeSeat(event) {
    this.setData({
        seatId: this.data.freeSeat[event.detail].seatId
    });
  },

  /**
   * 提交选座
   */
  submit() {
    const openid = wx.getStorageSync('openid');
    let order = {
        wxId: openid,
        seatId: this.data.seatId,
        realAccount: this.data.realAccount
    };
    util.request("/rms/order/addByWxId", "POST", order, res => {
        let code = res.data.code;
        if(code == 200) {
            wx.setStorageSync('realAccount', this.data.realAccount);
            wx.setStorageSync('seatId', this.data.seatId);
            wx.setStorageSync('orderId', res.data.data.orderId);
            this.judgeChoose();
            wx.redirectTo({
              url: '../menu/menu',
            })
        }
        this.reset();
    });
  },

  /**
   * 开始排队
   */
  startWait() {
    const openid = wx.getStorageSync('openid');
    let waitMessage = {
        wxId: openid,
        realAccount: this.data.realAccount
    };
    util.request("/rms/wait", "POST", waitMessage, res => {
        let code = res.data.code;
        if(code == 200) {
            let waitNo = res.data.data.waitNo;
            this.setData({
                waitStatus: 2, // 正在排队
                waitNo: waitNo
            });
        }
    });
  },

  reset() {
    this.setData({
        seatId: "",
        realAccount: 1
    })
  },

  /**
   * 判断是否需要选座
   */
  judgeChoose() {
      const seatId = wx.getStorageSync('seatId');
      const realAccount = wx.getStorageSync('realAccount');
      if(seatId && realAccount) {
          this.setData({
            seatId: seatId,
            realAccount: realAccount,
            choose: true
          });
      }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.judgeChoose();
    this.judgeWait();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },
})